package com.qianying.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qianying.comment.CommonResult;
import com.qianying.entity.ShopInfo;

/**
 * 店铺信息服务接口
 * 定义店铺信息的增删改查及分页查询等业务方法
 *
 * @author check
 * @date 2025-08-01
 */
public interface ShopInfoService {

    /**
     * 根据ID查询店铺信息（含关联数据）
     *
     * @param id 店铺ID
     * @return 包含店铺信息的通用结果
     */
    CommonResult<ShopInfo> getById(Long id);

    /**
     * 根据客户ID、门店名称和状态分页查询门店列表
     *
     * @param page       分页对象
     * @param customerId 客户ID
     * @param shopName   门店名称（可选）
     * @param status     门店状态（可选）
     * @return 包含分页门店列表的通用结果
     */
    CommonResult<IPage<ShopInfo>> getPageByCustomerId(Page<ShopInfo> page,
                                                      Long customerId,
                                                      String shopName,
                                                      Integer status);

    /**
     * 获取门店列表
     *
     * @param page       分页对象
     * @param shopName   门店名称（可选）
     * @param status     门店状态（可选）
     * @return 包含分页门店列表的通用结果
     */
    CommonResult<IPage<ShopInfo>> getPageAllShopList(Page<ShopInfo> page,
                                                      String shopName,
                                                      Integer status);

    /**
     * 新增大区信息
     *
     * @param shopInfo 店铺信息实体
     * @return 包含新增结果的通用结果
     */
    CommonResult<ShopInfo> save(ShopInfo shopInfo);

    /**
     * 根据ID更新店铺信息
     *
     * @param shopInfo 店铺信息实体（含ID）
     * @return 包含更新结果的通用结果
     */
    CommonResult<?> updateById(ShopInfo shopInfo);

    /**
     * 根据ID删除店铺信息
     *
     * @param id 店铺ID
     * @return 包含删除结果的通用结果
     */
    CommonResult<?> removeById(Long id);
}
